#include <stdio.h>
#include <stdlib.h>
#include "tp2.h"
#define TRUE 1
#define FALSE 0

  int main(){
    int i=FALSE,j=FALSE,rexec=0,nreg=0, nSKtit=0, a=0, aux, b;
    char rep,op, buffer[200];
    FILE *PKlist, *base;
    PK *lista, *listaSKtitulo, *listaSKtipo, *listaSKautor, *listaSKano;
    PKlist=fopen("PKlist.dat","r");
    if(PKlist==NULL){
      PKlist=fopen("base20.dat","a+");
      lista=CarregaPKDaBase(&nreg,PKlist);
      fclose(PKlist);
    }
    else{
      lista=CarregaPK(&nreg,PKlist);
      fclose(PKlist);
    }
    base=fopen("base20.dat","r");
    listaSKtitulo=CarregaSKDaBase(&nSKtit, base, 200);
    for(a=0;a<nSKtit;a++){
      for(b=0;b<200;b++){
        printf("%c",listaSKtitulo[a].titulo[b]);
      }
      printf("\n");
      printf("%d\n",listaSKtitulo[a].NRR);
    }
    fclose(base);
    base=fopen("listatitulo.dat","r");
    for(a=0;a<20;a++){
      fread(buffer,1,200,base);
      fread(&aux,1,4,base);
      for(b=0;b<200;b++){
        printf("%c",buffer[b]);
      }
      printf("\n");
      printf("%d\n",aux);
    }
    BuscaSK(listaSKtitulo,nSKtit);
    system("PAUSE");
    return 0;
  /*
   * O inteiro "rexec" funciona como um laco sem fim, para que sempre retorne no
   * principal, possibilitando outras verificacoes e insercoes, facilitando o
   * trabalho do usuario. 
   */
    while(rexec==0){
      printf("+-----------------------------------+\n");
      printf("|             OPCOES                |\n");
      printf("|===================================|\n");
      printf("|                                   |\n");
      printf("| (A): Inserir obra                 |\n");
      printf("| (B): Pesquisar obra               |\n");  
      printf("| (C): Sair do programa             |\n");
      printf("| (D): AJUDA                        |\n");  
      printf("|                                   |\n");
      printf("+-----------------------------------+\n\n");
      printf("Escolha a opcao:\n");
  /*
   * O inteiro "i" funciona como um verificador que,
   * quando confirmada a execu�ao com sucesso(i==1),
   * ele sai do la�o.
   */
      while(i==FALSE){
        scanf(" %c",&op);
        switch(op){
          case 'A':
            printf("\n");
            printf("Inserindo obra, digite os dados:\n\n");
            i=insere(&nreg,lista);
            j=FALSE;
            break;
          case 'a':
            printf("\n");
            printf("Inserindo obra, digite os dados:\n\n");
            i=insere(&nreg,lista);
            j=FALSE;
            break;
          case 'B':
            getchar();
            printf("\n");
            printf("Buscando obra, digite os dados:\n\n");
            j=Busca(lista,nreg);
            i=TRUE;
            break;
          case 'b':
            getchar();
            printf("\n");
            printf("Buscando obra, digite os dados:\n\n");
            j=Busca(lista,nreg);
            i=TRUE;
            break;
          case 'C':
            printf("\n");
            printf("Volte Sempre!\n");
            gravaPK(lista,nreg);
            return 0;
          case 'c':
            printf("\n");
            printf("Volte Sempre!\n");
            gravaPK(lista,nreg);
            return 0;
          case 'd':
            printf("\n");
            printf("Pressione A para inserir uma obra no banco de dados do arquivo\n");
            printf("Pressione B para pesquisar uma obra no banco de dados do arquivo\n");
            printf("Pressione C para sair do programa\n\n");
            printf("Escolha a opcao:\n");
            i=FALSE;
            j=FALSE;
            break;
          case 'D':
            printf("\n");
            printf("Pressione A para inserir uma obra no banco de dados do arquivo\n");
            printf("Pressione B para pesquisar uma obra no banco de dados do arquivo\n");
            printf("Pressione C para sair do programa\n\n");
            printf("Escolha a opcao:\n");
            i=FALSE;
            j=FALSE;
            break;
          default:
            printf("\n");
            printf("Opcao Invalida! Pressione (C) caso queira ver a opcao de AJUDA.\n");
            i=FALSE;
            j=FALSE;
            break;
        }
      }
      while(i==TRUE && j==FALSE){
        printf("Deseja adicionar uma nova obra ao registro?(S/N)\n");
        scanf(" %c",&rep);
        switch(rep){
          case 'S':
            printf("\n");
            printf("Inserindo obra, digite os dados:\n\n");
            i=insere(&nreg,lista);
            break;
          case 's':
            printf("\n");
            printf("Inserindo obra, digite os dados:\n\n");
            i=insere(&nreg,lista);
            break;
          case 'n':
            printf("\n");
            printf("Retornando a tela principal!\n\n");
            i=FALSE;
            break;
          case 'N':
            printf("\n");
            printf("Retornando a tela principal!\n\n");
            i=FALSE;
            break;
          default:
            printf("\n");
            printf("Opcao Invalida! Utilize somente (S) ou (N)!\n\n");
            i=TRUE;
            break;
        }
      }
      while(j==TRUE){
        printf("Deseja busca uma nova obra no registro?(S/N)\n");
        scanf(" %c",&rep);
        switch(rep){
          case 'S':
            getchar();
            printf("\n");
            printf("Buscando obra, digite os dados:\n\n");
            i=Busca(lista,nreg);
            break;
          case 's':
            getchar();
            printf("\n");
            printf("Buscando obra, digite os dados:\n\n");
            i=Busca(lista,nreg);
            break;
          case 'n':
            printf("\n");
            printf("Retornando a tela principal!\n\n");
            i=FALSE;
            j=FALSE;
            break;
          case 'N':
            printf("\n");
            printf("Retornando a tela principal!\n\n");
            i=FALSE;
            j=FALSE;
            break;
          default:
            printf("\n");
            printf("Opcao Invalida! Utilize somente (S) ou (N)!\n\n");
            i=TRUE;
            j=TRUE;
            break;
        }
      }    
    }
    return 0;
  }
